//package com.aaie.gru.config;
//
//import com.alibaba.fastjson.JSON;
//import org.aspectj.lang.JoinPoint;
//import org.aspectj.lang.annotation.AfterReturning;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Before;
//import org.aspectj.lang.annotation.Pointcut;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.core.annotation.Order;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Arrays;
//
///**
// * 使用AOP进行日志记录
// * com.whoareyou.fido.rest.controller包及子包下所有类所有public方法都被添加此AOP进行日志记录
// *
// * @author shengquan
// */
//@Aspect
//// 声明是个spring管理的bean
//@Component
//@Order(1)
//public class LogAop {
//	private static final Logger log = LoggerFactory.getLogger(LogAop.class);
//
//	// 声明一个切点 里面是 execution表达式
//	@Pointcut("execution(public * com.aaie.gru.*.controller..*.*(..))")
//	private void controllerAspect() {
//	}
//
//	// 请求method前打印内容
//	@Before(value = "controllerAspect()")
//	public void methodBefore(JoinPoint joinPoint) throws Exception {
//		ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
//				.getRequestAttributes();
//		HttpServletRequest request = requestAttributes.getRequest();
//		// 打印请求内容
//		log.info("===============请求内容===============");
//		log.info("请求地址:" + request.getRequestURL().toString());
//		log.info("请求方式:" + request.getMethod());
//		log.info("请求类方法:" + joinPoint.getSignature());
//		log.info("请求类方法参数:" + Arrays.toString(joinPoint.getArgs()));
//
//		Object[] args = joinPoint.getArgs();
//		String classType = joinPoint.getTarget().getClass().getName();
//		Class<?> clazz = Class.forName(classType);
//		String clazzName = clazz.getName();
//		String methodName = joinPoint.getSignature().getName(); // 获取方法名称
//		// 获取参数名称和值
//		StringBuffer sb = LogAopUtil.getNameAndArgs(this.getClass(), clazzName, methodName, args);
//		log.info("请求类方法参数名称和值：" + sb);
//		log.info("===============请求内容===============");
//	}
//
//	// 在方法执行完结后打印返回内容
//	@AfterReturning(returning = "o", pointcut = "controllerAspect()")
//	public void methodAfterReturing(Object o) {
//		log.info("--------------返回内容----------------");
//		log.info("Response内容:" + JSON.toJSONString(o));
//		log.info("--------------返回内容----------------");
//	}
//}